/**
 * @description:
 * @fileName: menus
 * @author: 17076
 * @date: 2025/4/21-上午10:02
 * @version: V1.0.0
 **/
import roleTag from './roleTag.js'

class MyButtonMenu { // JS 语法
  constructor() {
    this.title = '角色标签' // 自定义菜单标题
    // this.iconSvg = '<svg>...</svg>' // 可选
    this.tag = 'button'
  }
  // 获取菜单执行时的 value ，用不到则返回空 字符串或 false
  getValue() { // JS 语法
    return false
  }
  // 菜单是否需要激活（如选中加粗文本，“加粗”菜单会激活），用不到则返回 false
  isActive() { // JS 语法
    return false
  }
  // 菜单是否需要禁用（如选中 H1 ，“引用”菜单被禁用），用不到则返回 false
  isDisabled() { // JS 语法
    return false
  }
  // 点击菜单时触发的函数
  exec(editor) { // JS 语法
    if (this.isDisabled(editor)) return
    editor.insertNode({
      type: 'roleTag',
      vueValue: '',
      children: [{ text: '' }] // void 元素必须有一个 children ，其中只有一个空字符串，重要！！！
    }) // value 即 this.value(editor) 的返回值
  }
}
class GetHtmlMenu { // JS 语法
  constructor() {
    this.title = '获取html' // 自定义菜单标题
    // this.iconSvg = '<svg>...</svg>' // 可选
    this.tag = 'button'
  }
  // 获取菜单执行时的 value ，用不到则返回空 字符串或 false
  getValue(editor) { // JS 语法
    return ''
  }
  // 菜单是否需要激活（如选中加粗文本，“加粗”菜单会激活），用不到则返回 false
  isActive(editor) { // JS 语法
    return false
  }
  // 菜单是否需要禁用（如选中 H1 ，“引用”菜单被禁用），用不到则返回 false
  isDisabled(editor) { // JS 语法
    return false
  }
  // 点击菜单时触发的函数
  exec(editor, value) { // JS 语法
    if (this.isDisabled(editor)) return
    console.log(editor.getHtml())
  }
}

import { Boot } from '@wangeditor/editor'
Boot.registerModule({
  menus: [{
    key: 'roleTag', // 定义 menu key ：要保证唯一、不重复（重要）
    factory() {
      return new MyButtonMenu() // 把 `YourMenuClass` 替换为你菜单的 class
    }
  }, {
    key: 'GetHtmlMenu', // 定义 menu key ：要保证唯一、不重复（重要）
    factory() {
      return new GetHtmlMenu() // 把 `YourMenuClass` 替换为你菜单的 class
    }
  }] // 菜单
})
Boot.registerModule(roleTag)
